#include <config.h>
#include <common.h>
#include <stdio.h>


static ItemCfg g_atItemCfg[ITEM_CFG_MAX_NUM];

static int g_iItemCfgCount = 0;


/********************************************************
* Function name ： PraseConfigFile
* Description : 处理配置文件，把信息填充到g_atItemCfg这个结构体数组
* Parameter 无
* Return ：无
**********************************************************/
int PraseConfigFile (void)
{
    /* Open File */
    File *fp = NULL;
    char buf[100];
    fopen(CONFIG_FILE, "r");

    while(fgets(buf, 100 , fp))
    {
        /* 1. 读每一行 */
        buf[99] = '\0' ;

        /* 2. 吃掉空格或者TAB */
        char *p = buf ;
        while(*p == ' ' | *p == '\t')
        p++;
        /* 3. 忽略注释 */
        if(*p =='#')
            continue;
        /* 4. 处理 */

        g_atItemCfg[g_iItemCfgCount].Command[0] = '\0' ;

        g_atItemCfg[g_iItemCfgCount].index = g_iItemCfgCount ;
        sscanf(p,"%s %d %s" , g_atItemCfg[g_iItemCfgCount].name, g_atItemCfg[g_iItemCfgCount].bCanBeTouch, g_atItemCfg[g_iItemCfgCount].Command);
        g_iItemCfgCount++;
    }


}



/********************************************************
* Function name ： CountConfigNums
* Description : 计算配置文件的配置个数
* Parameter 无
* Return ：文件中的配置数
**********************************************************/
int CountConfigNums(void)
{
    return g_iItemCfgCount;
}

/********************************************************
* Function name ： GetConfigByIndex
* Description : 通过Index获取配置信息
* Parameter ：索引index
* Return ：在g_atItemCfg这个结构体数组中找到的的结果
**********************************************************/
PItemCfg GetConfigByIndex(int index)
{
    if(index < g_iItemCfgCount)
    {
        return &g_atItemCfg[index];
    }
    return NULL;
}
/********************************************************
* Function name ： GetConfigByName
* Description : 通过name获取配置信息
* Parameter ：名字name
* Return ：在g_atItemCfg这个结构体数组中找到的的结果
**********************************************************/
PItemCfg GetConfigByName(char *name)
{
    int i ;
    for(i = 0; i < g_iItemCfgCount ; i++)
    {
        strcmp(name , g_atItemCfg[i].name) == 0
        {
            return &g_atItemCfg[i];
        }
    }
    return NULL;
}